#include <bits/stdc++.h>

const int N = 1e3 + 5;
const int M = 10;
const int P = 1e9 + 7;

int n, m, x;
std::string y;
int f[N][M][M];
int pw[M];

int main() {
	std::cin >> n >> m >> x >> y;
	pw[0] = 1;
	for(int i = 1; i <= m + 1; ++i) pw[i] = 2 * pw[i-1] % P;
	f[0][m][m] = 1;
	for(int i = 1; i <= n; ++i) {
		if(x == i) {
			int j = 0;
			while(j < m && y[j] == 0) ++j;
			for(int a = 0; a <= m; ++a) {
				for(int b = 0; b <= m; ++b) {
					int a0 = j, b0 = std::min(a + j, b);
					f[i][a0][b0] = (f[i][a0][b0] + 1ll * (pw[m-j] - (m == j ? 0 : pw[m-j-1])) * f[i-1][a][b]) % P;
				}
			}
		} else {
			for(int j = 0; j <= m; ++j) {
				for(int a = 0; a <= m; ++a) {
					for(int b = 0; b <= m; ++b) {
						int a0 = j, b0 = std::min(a + j, b);
						f[i][a0][b0] = (f[i][a0][b0] + 1ll * (pw[m-j] - (m == j ? 0 : pw[m-j-1])) * f[i-1][a][b]) % P;
					}
				}

			}
		}
	}
	int ans = 0;
	for(int a = 0; a <= m; ++a) {
		for(int b = 0; b <= m; ++b) {
			std::cerr << a << " " << b << " " << f[n][a][b] << "\n";
			ans = (ans + 1ll * f[n][a][b] * pw[m-b]) % P;
		}
	}
	std::cout << ans << "\n";
	return 0;
}
